import { Physics, Scene } from "phaser";

export class Bullet extends Physics.Arcade.Sprite {
    constructor(scene: Scene, x: number, y: number, texture: string) {
        super(scene, x, y, texture);
        scene.add.existing(this);
        scene.physics.world.enable(this);
        // 设置属性
        this.setScale(0.25);
    }
    /**
     * 发射子弹
     * @param x 子弹x坐标
     * @param y 子弹y坐标
     */
    // fire(x: number, y: number) {
    //     this.enableBody(true, x, y, true, true);
    //     this.setVelocityY(-300);
    //     this.scene.sound.play("bullet");
    // }

    fire(x, y, targetX, targetY) {
        // this.setPosition(x, y);
        this.enableBody(true, x, y, true, true);
        this.setPosition(x, y);
         // 计算到目标的角度
         const angle = Phaser.Math.Angle.Between(x, y, targetX, targetY);
         // 设置速度
         this.scene.physics.velocityFromAngle(Phaser.Math.RadToDeg(angle), 300, this.body.velocity);
        this.scene.sound.play("bullet");
    }
    preUpdate(time: number, delta: number) {
        super.preUpdate(time, delta);
        // 子弹走到头，销毁
        if (this.y <= -14) {
            this.disableBody(true, true);
        }
    }
}
